package day20180417;

public class DistributeClass {

    public static final Boolean order = true;

    public static void main(String[] args) {

        //把分班后数据存入二位数组
        int test[][] = divideByClass(64, 8, order);
        String str = "顺序";
        if (!order) {
            str = "倒序";
        }

        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < test[i].length; j++) {
                int x = test[i][j];
                if (x != 0) {
                    System.out.println("进行" + str + "排列的结果：第" + (i + 1) + "班被分配的第" + (j + 1) + "位学生总体排名为：" + x + "");
                }
            }
        }

    }

    public static int[][] divideByClass(int stuNum,int classNum,boolean type){

        //定义一个二维数组，初始化容量为 stuNum=64 classNum=8 ,int[8][9]
        int[][] rs = new int[classNum][stuNum/classNum+1];

        for(int i=0;i<stuNum;i++){//i<64

            int x = i%classNum;//求余 64/8  0 1 2 3 4 5 6 7   横坐标
            int y = i/classNum;//整除 64/8  0 1 2 3 4 5 6 7 8  纵坐标

            //求余x=0，整除y！=0的时候，type取反
            if(x==0 && y!=0){  // 8-false 16-true 24-false 32-true 40-false 48-true 56-true 64-false
                type=!type;
            }

            if(!type){
                x = classNum-i%classNum-1; //班级数-序号%班级数-1
                y = i/classNum;//序号/班级数
            }
            rs[x][y]=i+1;

            /** x求余  y整除  rs数组
             *  i=0;x=0;y=0;type=true,rs[0][0]=1;
             *  i=1;x=1;y=0;type=true,rs[1][0]=2;
             *  i=2;x=2;y=0;type=true,rs[2][0]=3;
             *  i=3;x=3;y=0;type=true,rs[3][0]=4;
             *  i=4;x=4;y=0;type=true,rs[4][0]=5;
             *  i=5;x=5;y=0;type=true,rs[5][0]=6;
             *  i=6;x=6;y=0;type=true,rs[6][0]=7;
             *  i=7;x=7;y=0;type=true,rs[7][0]=8;
             *  i=8;x=6;y=1;type=false,rs[6][1]=9;
             *  i=9;x=6;y=1;type=false,rs[7][1]=10;
             *  i=10;x=
             */
        }
        return rs;
    }
}
